#include <stdio.h>
#include "msg_queue.h"

mqd_t msg_queue_create(void)
{
    mqd_t mqd = -1;
    struct mq_attr attr;

    // 设置消息队列属性
    attr.mq_flags = 0;     // 阻塞
    attr.mq_maxmsg = 10;   // 最大消息数
    attr.mq_msgsize = 256; // 消息最大大小
    attr.mq_curmsgs = 0;   // 当前消息数

    // 创建消息队列
    mqd = mq_open(MQ_NAME, O_CREAT | O_RDWR, 0666, &attr);

    return mqd;
}

void msg_queue_final(mqd_t mqd)
{
    if (mqd != -1)
    {
        mq_close(mqd);
    }

    mq_unlink(MQ_NAME);
}

int msg_queue_send(mqd_t mqd, void *arg, int msg_len)
{
    int ret = -1;

    printf("send start----\n");
    ret = mq_send(mqd, (char *)arg, msg_len, 0);
    printf("send end-----\n");

    return ret;
}